<?php

namespace app\index\controller;

use app\common\controller\Frontend;
use think\Db;

class Wx extends Frontend
{

    protected $token = 'miao';
    protected $noNeedRight = '*';
    protected $layout = '';

    public function index()
    {
        //如果没有通过GET收到echostr字符串， 说明不是再使用token验证
        if (!isset($_GET['echostr'])) {
            //调用wecat对象中的方法响应用户消息

        }else{
            //调用valid()方法，进行token验证
            $echoStr = $_GET["echostr"];
            if($this->valid()){
                echo $echoStr;
                exit;
            }
        }
    }

    public function valid() {
        //微信加密签名，signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
        $signature = $_GET["signature"];
        //时间戳
        $timestamp = $_GET["timestamp"];
        //随机数
        $nonce = $_GET["nonce"];
        //token
        $token = $this->token;
        //将token、timestamp、nonce三个参数进行字典序排序
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        //将三个参数字符串拼接成一个字符串进行sha1加密
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        //开发者获得加密后的字符串可与signature对比，标识该请求来源于微信
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }

}
